package learningThread.syn.synchronizedMethodLockObj.communicate.testVolatileAndNotify;

/**
 * waite方法是使当前线程进入等待状态，waite是Object类的方法,该方法用来将当前线程置入  预执行队列中，
 * 并且在waite所在的代码行处停止执行，直到接到通知或者被中断为止。
 * 注意:在执行waite方法前  当前线程必须获得对象的对象级别锁，即只能在 syn方法或者 syn方法快中执行 waite
 * 在执行waite方法后，当前线程释放锁，在从waite返回前，线程和其他线程竞争锁。
 */
public class MyThread1 extends Thread{

    private Object obj;

    public MyThread1(Object obj) {
        this.obj = obj;
    }

    @Override
    public void run() {
        try {
            synchronized (obj){
                System.out.println("开始 waite..."+System.currentTimeMillis());
                obj.wait();
                System.out.println("结束 waite..."+System.currentTimeMillis());
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
